﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////


#pragma once
#include "GcmpGraphicsNodeInterface.h"
#include "IGraphicsNodeVisibilityFilter.h"


namespace gcmp
{
    class ILinkDocumentElement;

    /// \brief 消隐边可见性过滤器
    class GCMP_GRAPHICS_NODE_INTERFACE_EXPORT IHideEdgesVisibilityFilter : public IGraphicsNodeVisibilityFilter
    {
        DEFINE_CAST_DERIVED(gcmp::IHideEdgesVisibilityFilter, gcmp::IGraphicsNodeVisibilityFilter)
    public:
        /// \brief 获取造成当前边产生消隐效果的对方ElementID
        /// \return  std::set<ElementId>&  ElementId的集合
        virtual const std::set<ElementId>& GetReferenceElementIds() const = 0;

        /// \brief 判断链接文档里消隐边的可见性
        /// \param pModelView 当前视图指针
        /// \param pDocElement 链接文档对应的Element
        /// \param isLinkGrep 是否是引用grep
        virtual bool IsVisible(const IModelView* pModeView, const ILinkDocumentElement* pDocElement, bool isLinkGrep) const = 0;


    public:
        virtual ~IHideEdgesVisibilityFilter() = 0;
    };
}




